import pygame
from pygame.locals import *
from Carro import *
from Pista import *
from Configuracao import *
import time
from sys import exit
import os

config = Configuracao()
#objeto que contém a configuração do jogo.

pygame.init()

pygame.display.set_caption(config.caption)
#Mostra um texto na barra de título.
tela = pygame.display.set_mode(config.resolucao)
#define a resolução da tela em pixels. 

imagemMenu = pygame.image.load(os.getcwd()+os.sep+"imagens"+os.sep+"menu.png")
# intancia a imagem da pista.

imagemPista = pygame.image.load(os.getcwd()+os.sep+"imagens"+os.sep+"pista.png")
# intancia a imagem da pista.
pista = Pista(imagemPista)

imagemCarro = pygame.image.load(os.getcwd()+os.sep+"imagens"+os.sep+"carro_azul.png")
# intancia a imagem do carro.
carroAzul = Carro(175,300,imagemCarro)
# cria um objeto carro.

imagemCarro = pygame.image.load(os.getcwd()+os.sep+"imagens"+os.sep+"carro_vermelho.png")
# intancia a imagem do carro.
carroVermelho = Carro(175,300,imagemCarro)
# cria um objeto carro.

imagemCarro = pygame.image.load(os.getcwd()+os.sep+"imagens"+os.sep+"carro_verde.png")
# intancia a imagem do carro.
carroVerde = Carro(175,300,imagemCarro)
# cria um objeto carro.


pygame.mixer.music.load(os.getcwd()+os.sep+"som"+os.sep+"o_calhambeque.wav")
# instancia do som

pygame.display.flip()
#atualiza a tela.

pygame.key.set_repeat(100, 100)

sinalSaida = False
sinalEscape = False

while True:

    tela.blit(imagemMenu,(0,0))
    #carrega a imagem do menu na tela.

    pygame.display.flip()
    
    while True:
        carro = None

        for event in pygame.event.get():
            pass

        if event.type == QUIT:
            sinalSaida = True
            break
         
        teclaPressionada = pygame.key.get_pressed()
         
        if teclaPressionada[K_a]:
            carro = carroAzul
        elif teclaPressionada[K_b]:
            carro = carroVermelho
        elif teclaPressionada[K_c]:
            carro = carroVerde

        if carro != None:
            tela.blit(pista.getImagem(),(0,pista.getAltura()))
            #carrega a pista na tela.
            
            tela.blit(carro.getImagem(),(carro.getX(),carro.getY()))
            #carrega o carro na tela.

            cont = 0
            #Contador
            #Utilizado para mudar a posição da pista.

            pygame.mixer.music.play(1)
            
            while True:
                cont += 1
                #incrementa o contador.
                
                for event in pygame.event.get():
                    pass

                if event.type == QUIT:
                    sinalSaida = True
                    break
             
                teclaPressionada = pygame.key.get_pressed()
             
                if teclaPressionada[K_LEFT]:
                    carro.moverEsquerda()
             
                if teclaPressionada[K_RIGHT]:
                    carro.moverDireita()

                if teclaPressionada[K_ESCAPE]:
                    sinalEscape = True
                    pygame.mixer.music.stop()
                    break

                if cont == 10:
                    cont = 0
                    pista.mover()
                    
                tela.blit(pista.getImagem(),(0,pista.getAltura()))
                #atualiza a imagem da pista na tela.
                tela.blit(carro.getImagem(),(carro.getX(),carro.getY()))
                #atualiza a imagem do carro na tela.
                
                pygame.display.flip()

        if sinalSaida:
            break
        elif sinalEscape:
            break
    if sinalSaida:
        break
exit()
